// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../SQLStatementImpl.h"
#include "../SQLReplaceable.h"

class SQLFetchStatement : virtual public SQLStatementImpl, virtual public SQLReplaceable
{
public:
  SQLName_ptr cursorName;
  BOOL_ptr bulkCollect;
  SQLExpr_list_ptr into;
  SQLLimit_ptr limit;

  SQLFetchStatement();
  SHAREDOBJECT(SQLFetchStatement);
  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  SQLName_ptr getCursorName();

  void setCursorName(SQLName_ptr x);

  SQLLimit_ptr getLimit();

  void setLimit(SQLLimit_ptr x);

  SQLExpr_list_ptr getInto();

  void setInto(SQLExpr_list_ptr into);

  BOOL_ptr isBulkCollect();

  void setBulkCollect(BOOL_ptr bulkCollect);

  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);
};
